Adaptive timing congfiguration for athletic devices

ABSTRACT

A system configured to allow one or more timing processes to accurately keep track of one or more timers while a processor executing the one or more timing processes is in a low-power operational mode. The system is configured to set a real-time clock alarm expiration time equal to a closest expiration time, from a current time, of the one or more timers. Accordingly, upon expiration of the real-time clock alarm, an interrupt is communicated to the processor, resulting in the processor being brought out of a low-power operational mode, and executing one or more processes associated with the corresponding expired timer.

CROSS REFERENCE TO RELATED APPLICATIONS

This application claims the benefit of, and priority to, U.S.Provisional Patent Application No. 61/890,707, entitled “ADAPTIVE TIMINGCONFIGURATION FOR ATHLETIC DEVICES” filed Oct. 14, 2013. The content ofwhich is expressly incorporated herein by reference in its entirety forany and all non-limiting purposes.

BACKGROUND

Modern technology has given rise to a wide variety of differentelectronic and/or communication devices that keep users in touch withone another, entertained, and informed. A wide variety of portableelectronic devices are available for these purposes, such as: cellulartelephones; personal digital assistants (“PDAs”); pagers; beepers; MP3or other audio playback devices; radios; portable televisions, DVDplayers, or other video playing devices; watches; GPS systems; etc. Manypeople like to carry one or more of these types of devices with themwhen they exercise and/or participate in athletic events, for example,to keep them in contact with others (e.g., in case of inclement weather,injuries; or emergencies; to contact coaches or trainers; etc.), to keepthem entertained, to provide information (time, direction, location, andthe like).

Athletic performance monitoring systems also have benefited from recentadvancements in electronic device and digital technology. Electronicperformance monitoring devices allow for monitoring of many physical orphysiological characteristics associated with exercise or other athleticperformances, including, for example: speed and distance data, altitudedata, GPS data, heart rate, pulse rate, blood pressure data, bodytemperature, etc. Specifically, these athletic performance monitoringsystems have benefited from recent advancements in microprocessordesign, allowing increasingly complex computations and processes to beexecuted by microprocessors of successively diminutive size. Thesemodern microprocessors may be used for execution of activity recognitionprocesses, such that a sport or activity that is being carried out by anathlete can be recognized, and information related to that sport oractivity can be analyzed and/or stored.

Inherently, however, portable electronic device systems are oftenpowered by limited power sources, such as rechargeable batteries.Accordingly, as the computations carried out by these devices havebecome increasingly complex, the power consumption of the integralprocessors carrying out the computations has significantly increased.Consequently, the usable time between battery recharges has decreased.

In some instances it may be desirable to place one or more processorsassociated with a portable electronic device into a low-poweroperational mode. As such, a processor executing a low-power operationalmode may operate using a low clock rate/clock speed that is below anoperating clock rate. However, a processor executing a low-poweroperational mode may not be able to maintain (continue executing) one ormore timer processes (timers). As such, a portable electronic deviceusing one or more timer processes may require that a processor continuesto operate in a high-power operational mode, and hence, operate with anassociated relatively high power consumption.

Aspects of this disclosure are directed towards novel systems andmethods that address one or more of these deficiencies. Further aspectsrelate to minimizing other shortcomings in the art.

BRIEF SUMMARY

The following presents a simplified summary of the present disclosure inorder to provide a basic understanding of some aspects of the invention.This summary is not an extensive overview of the invention. It is notintended to identify key or critical elements of the invention or todelineate the scope of the invention. The following summary merelypresents some concepts of the invention in a simplified form as aprelude to the more detailed description provided below.

In one aspect, this disclosure includes a system configured to allow oneor more timing processes to accurately keep track of one or more timerswhile a processor executing the one or more timing processes is in alow-power operational mode. The system is configured to set a real-timeclock alarm expiration time equal to a closest expiration time, from acurrent time, of the one or more timers. Accordingly, upon expiration ofthe real-time clock alarm, an interrupt is communicated to theprocessor, resulting in the processor being brought out of a low-poweroperational mode, and execution one or more processes associated withthe corresponding expired timer.

In another aspect, this disclosure relates to an apparatus having aprocessor, a real-time clock alarm module, and a real-time clockcalendar module configured to trigger an expiration of a real-time clockalarm. The apparatus further has a memory storing instructions that areexecuted by the processor, causing the apparatus to store timers in aqueue, identify expired timers from the queue upon expiration of areal-time clock alarm, execute processes associated with expired timers,remove expired timers from the queue, and set a real-time clock alarm toexpire at expiration time associated with a timer remaining in thequeue.

In yet another aspect, this disclosure relates to an apparatusconfigured to be worn on an appendage of a user, and having a powersupply, and a sensor configured to capture data based on the user'smovement. The apparatus may further include a processor configured toreceive captured movement data, and a real-time clock alarm module. Theapparatus may further have computer-executable instructions that areexecuted by the processor, and store timers in a data structure,identify expired timers upon expiration of a real-time clock alarm,execute one or more processes associated with the expired timers, removeexpired timers from the data structure, and set a real-time clock alarmto expire at a time of expiration of a timer in a data structure.

In another aspect, this disclosure relates to a non-transitorycomputer-readable medium comprising computer-executable instructionsexecuted by a processor to store timers in a data structure, andidentify one or more timers that will expire within a predeterminedactive time period, upon expiration of a real-time clock alarm. Thecomputer-executable instructions may further execute one or moreprocesses associated with the identified timers, and set an alarmexpiration time of a real-time clock alarm equal to an expiration timeof the timer stored in the data structure. Additionally, thecomputer-executable instructions may set the processor to operate in alow-power operational mode.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an example system that may be configured to providepersonal training and/or obtain data from the physical movements of auser in accordance with example embodiments;

FIG. 2 illustrates an example computer device that may be part of or incommunication with the system of FIG. 1.

FIG. 3 shows an illustrative sensor assembly that may be worn by a userin accordance with example embodiments;

FIG. 4 shows another example sensor assembly that may be worn by a userin accordance with example embodiments;

FIG. 5 shows illustrative locations for sensory input which may includephysical sensors located on/in a user's clothing and/or be based uponidentification of relationships between two moving body parts of theuser;

FIG. 6 depicts a schematic block diagram of an illustrativemicrocontroller;

FIG. 7 depicts a schematic block diagram of an illustrative real-timeclock module;

FIG. 8 depicts a schematic block diagram of one exemplary timer datastructure;

FIG. 9 depicts a schematic block diagram of an alternative exemplarytimer data structure;

FIG. 10 is a flowchart diagram of an exemplary process allowing one ormore timer processes to execute while a processor is set into alow-power operational mode;

FIG. 11 is a flowchart diagram of an alternative exemplary process forallowing one or more timer processes to execute while a processoroperates in a low-power operational mode.

DETAILED DESCRIPTION

Aspects of this disclosure involve obtaining, storing, and/or processingathletic data relating to the physical movements of an athlete. Theathletic data may be actively or passively sensed and/or stored in oneor more non-transitory storage mediums. Still further aspects relate tousing athletic data to generate an output, such as for example,calculated athletic attributes, feedback signals to provide guidance,and/or other information. These and other aspects will be discussed inthe context of the following illustrative examples of a personaltraining system.

In the following description of the various embodiments, reference ismade to the accompanying drawings, which form a part hereof, and inwhich is shown by way of illustration various embodiments in whichaspects of the disclosure may be practiced. It is to be understood thatother embodiments may be utilized and structural and functionalmodifications may be made without departing from the scope and spirit ofthe present disclosure. Further, headings within this disclosure shouldnot be considered as limiting aspects of the disclosure and the exampleembodiments are not limited to the example headings.

I. Example Personal Training System

A. Illustrative Networks

Aspects of this disclosure relate to systems and methods that may beutilized across a plurality of networks. In this regard, certainembodiments may be configured to adapt to dynamic network environments.Further embodiments may be operable in differing discrete networkenvironments. FIG. 1 illustrates an example of a personal trainingsystem 100 in accordance with example embodiments. Example system 100may include one or more interconnected networks, such as theillustrative body area network (BAN) 102, local area network (LAN) 104,and wide area network (WAN) 106. As shown in FIG. 1 (and describedthroughout this disclosure), one or more networks (e.g., BAN 102, LAN104, and/or WAN 106), may overlap or otherwise be inclusive of eachother. Those skilled in the art will appreciate that the illustrativenetworks 102-106 are logical networks that may each comprise one or moredifferent communication protocols and/or network architectures and yetmay be configured to have gateways to each other or other networks. Forexample, each of BAN 102, LAN 104 and/or WAN 106 may be operativelyconnected to the same physical network architecture, such as cellularnetwork architecture 108 and/or WAN architecture 110. For example,portable electronic device 112, which may be considered a component ofboth BAN 102 and LAN 104, may comprise a network adapter or networkinterface card (NIC) configured to translate data and control signalsinto and from network messages according to one or more communicationprotocols, such as the Transmission Control Protocol (TCP), the InternetProtocol (IP), and the User Datagram Protocol (UDP) through one or moreof architectures 108 and/or 110. These protocols are well known in theart, and thus will not be discussed here in more detail.

Network architectures 108 and 110 may include one or more informationdistribution network(s), of any type(s) or topology(s), alone or incombination(s), such as for example, cable, fiber, satellite, telephone,cellular, wireless, etc. and as such, may be variously configured suchas having one or more wired or wireless communication channels(including but not limited to: WiFi®, Bluetooth®, Near-FieldCommunication (NFC) and/or ANT technologies). Thus, any device within anetwork of FIG. 1, (such as portable electronic device 112 or any otherdevice described herein) may be considered inclusive to one or more ofthe different logical networks 102-106. With the foregoing in mind,example components of an illustrative BAN and LAN (which may be coupledto WAN 106) will be described.

1. Example Local Area Network

LAN 104 may include one or more electronic devices, such as for example,computer device 114. Computer device 114, or any other component ofsystem 100, may comprise a mobile terminal, such as a telephone, musicplayer, tablet, netbook or any portable device. In other embodiments,computer device 114 may comprise a media player or recorder, desktopcomputer, server(s), a gaming console, such as for example, a Microsoft®XBOX, Sony® Playstation, and/or a Nintendo® Wii gaming consoles. Thoseskilled in the art will appreciate that these are merely example devicesfor descriptive purposes and this disclosure is not limited to anyconsole or computing device.

Those skilled in the art will appreciate that the design and structureof computer device 114 may vary depending on several factors, such asits intended purpose. One example implementation of computer device 114is provided in FIG. 2, which illustrates a block diagram of computingdevice 200. Those skilled in the art will appreciate that the disclosureof FIG. 2 may be applicable to any device disclosed herein. Device 200may include one or more processors, such as processor 202-1 and 202-2(generally referred to herein as “processors 202” or “processor 202”).Processors 202 may communicate with each other or other components viaan interconnection network or bus 204. Processor 202 may include one ormore processing cores, such as cores 206-1 and 206-2 (referred to hereinas “cores 206” or more generally as “core 206”), which may beimplemented on a single integrated circuit (IC) chip.

Cores 206 may comprise a shared cache 208 and/or a private cache (e.g.,caches 210-1 and 210-2, respectively). One or more caches 208/210 maylocally cache data stored in a system memory, such as memory 212, forfaster access by components of the processor 202. Memory 212 may be incommunication with the processors 202 via a chipset 216. Cache 208 maybe part of system memory 212 in certain embodiments. Memory 212 mayinclude, but is not limited to, random access memory (RAM), read onlymemory (ROM), and include one or more of solid-state memory, optical ormagnetic storage, and/or any other medium that can be used to storeelectronic information. Yet other embodiments may omit system memory212.

System 200 may include one or more I/O devices (e.g., I/O devices 214-1through 214-3, each generally referred to as I/O device 214). I/O datafrom one or more I/O devices 214 may be stored at one or more caches208, 210 and/or system memory 212. Each of I/O devices 214 may bepermanently or temporarily configured to be in operative communicationwith a component of system 100 using any physical or wirelesscommunication protocol.

Returning to FIG. 1, four example I/O devices (shown as elements116-122) are shown as being in communication with computer device 114.Those skilled in the art will appreciate that one or more of devices116-122 may be stand-alone devices or may be associated with anotherdevice besides computer device 114. For example, one or more I/O devicesmay be associated with or interact with a component of BAN 102 and/orWAN 106. I/O devices 116-122 may include, but are not limited toathletic data acquisition units, such as for example, sensors. One ormore I/O devices may be configured to sense, detect, and/or measure anathletic parameter from a user, such as user 124. Examples include, butare not limited to: an accelerometer, a gyroscope, alocation-determining device (e.g., GPS), light (including non-visiblelight) sensor, temperature sensor (including ambient temperature and/orbody temperature), sleep pattern sensors, heart rate monitor,image-capturing sensor, moisture sensor, force sensor, compass, angularrate sensor, and/or combinations thereof among others.

In further embodiments, I/O devices 116-122 may be used to provide anoutput (e.g., audible, visual, or tactile cue) and/or receive an input,such as a user input from athlete 124. Example uses for theseillustrative I/O devices are provided below, however, those skilled inthe art will appreciate that such discussions are merely descriptive ofsome of the many options within the scope of this disclosure. Further,reference to any data acquisition unit, I/O device, or sensor is to beinterpreted disclosing an embodiment that may have one or more I/Odevice, data acquisition unit, and/or sensor disclosed herein or knownin the art (either individually or in combination).

Information from one or more devices (across one or more networks) maybe used to provide (or be utilized in the formation of) a variety ofdifferent parameters, metrics or physiological characteristics includingbut not limited to: motion parameters, such as speed, acceleration,distance, steps taken, direction, relative movement of certain bodyportions or objects to others, or other motion parameters which may beexpressed as angular rates, rectilinear rates or combinations thereof,physiological parameters, such as calories, heart rate, sweat detection,effort, oxygen consumed, oxygen kinetics, and other metrics which mayfall within one or more categories, such as: pressure, impact forces,information regarding the athlete, such as height, weight, age,demographic information and combinations thereof.

System 100 may be configured to transmit and/or receive athletic data,including the parameters, metrics, or physiological characteristicscollected within system 100 or otherwise provided to system 100. As oneexample, WAN 106 may comprise server 111. Server 111 may have one ormore components of system 200 of FIG. 2. In one embodiment, server 111comprises at least a processor and a memory, such as processor 206 andmemory 212. Server 111 may be configured to store computer-executableinstructions on a non-transitory computer-readable medium. Theinstructions may comprise athletic data, such as raw or processed datacollected within system 100. System 100 may be configured to transmitdata, such as energy expenditure points, to a social networking websiteor host such a site. Server 111 may be utilized to permit one or moreusers to access and/or compare athletic data. As such, server 111 may beconfigured to transmit and/or receive notifications based upon athleticdata or other information.

Returning to LAN 104, computer device 114 is shown in operativecommunication with a display device 116, an image-capturing device 118,sensor 120 and exercise device 122, which are discussed in turn belowwith reference to example embodiments. In one embodiment, display device116 may provide audio-visual cues to athlete 124 to perform a specificathletic movement. The audio-visual cues may be provided in response tocomputer-executable instruction executed on computer device 114 or anyother device, including a device of BAN 102 and/or WAN. Display device116 may be a touchscreen device or otherwise configured to receive auser-input.

In one embodiment, data may be obtained from image-capturing device 118and/or other sensors, such as sensor 120, which may be used to detect(and/or measure) athletic parameters, either alone or in combinationwith other devices, or stored information. Image-capturing device 118and/or sensor 120 may comprise a transceiver device. In one embodimentsensor 128 may comprise an infrared (IR), electromagnetic (EM) oracoustic transceiver. For example, image-capturing device 118, and/orsensor 120 may transmit waveforms into the environment, includingtowards the direction of athlete 124 and receive a “reflection” orotherwise detect alterations of those released waveforms. Those skilledin the art will readily appreciate that signals corresponding to amultitude of different data spectrums may be utilized in accordance withvarious embodiments. In this regard, devices 118 and/or 120 may detectwaveforms emitted from external sources (e.g., not system 100). Forexample, devices 118 and/or 120 may detect heat being emitted from user124 and/or the surrounding environment. Thus, image-capturing device 126and/or sensor 128 may comprise one or more thermal imaging devices. Inone embodiment, image-capturing device 126 and/or sensor 128 maycomprise an IR device configured to perform range phenomenology.

In one embodiment, exercise device 122 may be any device configurable topermit or facilitate the athlete 124 performing a physical movement,such as for example a treadmill, step machine, etc. There is norequirement that the device be stationary. In this regard, wirelesstechnologies permit portable devices to be utilized, thus a bicycle orother mobile exercising device may be utilized in accordance withcertain embodiments. Those skilled in the art will appreciate thatequipment 122 may be or comprise an interface for receiving anelectronic device containing athletic data performed remotely fromcomputer device 114. For example, a user may use a sporting device(described below in relation to BAN 102) and upon returning home or thelocation of equipment 122, download athletic data into element 122 orany other device of system 100. Any I/O device disclosed herein may beconfigured to receive activity data.

2. Body Area Network

BAN 102 may include two or more devices configured to receive, transmit,or otherwise facilitate the collection of athletic data (includingpassive devices). Exemplary devices may include one or more dataacquisition units, sensors, or devices known in the art or disclosedherein, including but not limited to I/O devices 116-122. Two or morecomponents of BAN 102 may communicate directly, yet in otherembodiments, communication may be conducted via a third device, whichmay be part of BAN 102, LAN 104, and/or WAN 106. One or more componentsof LAN 104 or WAN 106 may form part of BAN 102. In certainimplementations, whether a device, such as portable device 112, is partof BAN 102, LAN 104, and/or WAN 106, may depend on the athlete'sproximity to an access point to permit communication with mobilecellular network architecture 108 and/or WAN architecture 110. Useractivity and/or preference may also influence whether one or morecomponents are utilized as part of BAN 102. Example embodiments areprovided below.

User 124 may be associated with (e.g., possess, carry, wear, and/orinteract with) any number of devices, such as portable device 112,shoe-mounted device 126, wrist-worn device 128 and/or a sensinglocation, such as sensing location 130, which may comprise a physicaldevice or a location that is used to collect information. One or moredevices 112, 126, 128, and/or 130 may not be specially designed forfitness or athletic purposes. Indeed, aspects of this disclosure relateto utilizing data from a plurality of devices, some of which are notfitness devices, to collect, detect, and/or measure athletic data. Incertain embodiments, one or more devices of BAN 102 (or any othernetwork) may comprise a fitness or sporting device that is specificallydesigned for a particular sporting use. As used herein, the term“sporting device” includes any physical object that may be used orimplicated during a specific sport or fitness activity. Exemplarysporting devices may include, but are not limited to: golf balls,basketballs, baseballs, soccer balls, footballs, powerballs, hockeypucks, weights, bats, clubs, sticks, paddles, mats, and combinationsthereof. In further embodiments, exemplary fitness devices may includeobjects within a sporting environment where a specific sport occurs,including the environment itself, such as a goal net, hoop, backboard,portions of a field, such as a midline, outer boundary marker, base, andcombinations thereof

In this regard, those skilled in the art will appreciate that one ormore sporting devices may also be part of (or form) a structure andvice-versa, a structure may comprise one or more sporting devices or beconfigured to interact with a sporting device. For example, a firststructure may comprise a basketball hoop and a backboard, which may beremovable and replaced with a goal post. In this regard, one or moresporting devices may comprise one or more sensors, such as one or moreof the sensors discussed above in relation to FIGS. 1-3, that mayprovide information utilized, either independently or in conjunctionwith other sensors, such as one or more sensors associated with one ormore structures. For example, a backboard may comprise a first sensorconfigured to measure a force and a direction of the force by abasketball upon the backboard and the hoop may comprise a second sensorto detect a force. Similarly, a golf club may comprise a first sensorconfigured to detect grip attributes on the shaft and a second sensorconfigured to measure impact with a golf ball.

Looking to the illustrative portable device 112, it may be amulti-purpose electronic device, that for example, includes a telephoneor digital music player, including an IPOD®, IPAD®, or iPhone®, branddevices available from Apple, Inc. of Cupertino, Calif. or Zune® orMicrosoft® Windows devices available from Microsoft of Redmond,Washington. As known in the art, digital media players can serve as anoutput device, input device, and/or storage device for a computer.Device 112 may be configured as an input device for receiving raw orprocessed data collected from one or more devices in BAN 102, LAN 104,or WAN 106. In one or more embodiments, portable device 112 may compriseone or more components of computer device 114. For example, portabledevice 112 may be include a display 116, image-capturing device 118,and/or one or more data acquisition devices, such as any of the I/Odevices 116-122 discussed above, with or without additional components,so as to comprise a mobile terminal.

a. Illustrative Apparel/Accessory Sensors

In certain embodiments, I/O devices may be formed within or otherwiseassociated with user's 124 clothing or accessories, including a watch,armband, wristband, necklace, shirt, shoe, or the like. These devicesmay be configured to monitor athletic movements of a user. It is to beunderstood that they may detect athletic movement during user's 124interactions with computer device 114 and/or operate independently ofcomputer device 114 (or any other device disclosed herein). For example,one or more devices in BAN 102 may be configured to function as anall-day activity monitor that measures activity regardless of the user'sproximity or interactions with computer device 114. It is to be furtherunderstood that the sensory system 302 shown in FIG. 3 and the deviceassembly 400 shown in FIG. 4, each of which are described in thefollowing paragraphs, are merely illustrative examples.

i. Shoe-Mounted Device

In certain embodiments, device 126 shown in FIG. 1, may comprisefootwear which may include one or more sensors, including but notlimited to those disclosed herein and/or known in the art. FIG. 3illustrates one example embodiment of a sensor system 302 providing oneor more sensor assemblies 304. Assembly 304 may comprise one or moresensors, such as for example, an accelerometer, gyroscope,location-determining components, force sensors and/or or any othersensor disclosed herein or known in the art. In the illustratedembodiment, assembly 304 incorporates a plurality of sensors, which mayinclude force-sensitive resistor (FSR) sensors 306; however, othersensor(s) may be utilized. Port 308 may be positioned within a solestructure 309 of a shoe, and is generally configured for communicationwith one or more electronic devices. Port 308 may optionally be providedto be in communication with an electronic module 310, and the solestructure 309 may optionally include a housing 311 or other structure toreceive the module 310. The sensor system 302 may also include aplurality of leads 312 connecting the FSR sensors 306 to the port 308,to enable communication with the module 310 and/or another electronicdevice through the port 308. Module 310 may be contained within a wellor cavity in a sole structure of a shoe, and the housing 311 may bepositioned within the well or cavity. In one embodiment, at least onegyroscope and at least one accelerometer are provided within a singlehousing, such as module 310 and/or housing 311. In at least a furtherembodiment, one or more sensors are provided that, when operational, areconfigured to provide directional information and angular rate data. Theport 308 and the module 310 include complementary interfaces 314, 316for connection and communication.

In certain embodiments, at least one force-sensitive resistor 306 shownin FIG. 3 may contain first and second electrodes or electrical contacts318, 320 and a force-sensitive resistive material 322 disposed betweenthe electrodes 318, 320 to electrically connect the electrodes 318, 320together. When pressure is applied to the force-sensitive material 322,the resistivity and/or conductivity of the force-sensitive material 322changes, which changes the electrical potential between the electrodes318, 320. The change in resistance can be detected by the sensor system302 to detect the force applied on the sensor 316. The force-sensitiveresistive material 322 may change its resistance under pressure in avariety of ways. For example, the force-sensitive material 322 may havean internal resistance that decreases when the material is compressed.Further embodiments may utilize “volume-based resistance”, which may beimplemented through “smart materials.” As another example, the material322 may change the resistance by changing the degree ofsurface-to-surface contact, such as between two pieces of the forcesensitive material 322 or between the force sensitive material 322 andone or both electrodes 318, 320. In some circumstances, this type offorce-sensitive resistive behavior may be described as “contact-basedresistance.”

ii. Wrist-Worn Device

As shown in FIG. 4, device 400 (which may resemble or comprise sensorydevice 128 shown in FIG. 1), may be configured to be worn by user 124,such as around a wrist, arm, ankle, neck or the like. Device 400 mayinclude an input mechanism, such as a depressible input button 402configured to be used during operation of the device 400. The inputbutton 402 may be operably connected to a controller 404 and/or anyother electronic components, such as one or more of the elementsdiscussed in relation to computer device 114 shown in FIG. 1. Controller404 may be embedded or otherwise part of housing 406. Housing 406 may beformed of one or more materials, including elastomeric components andcomprise one or more displays, such as display 408. The display may beconsidered an illuminable portion of the device 400. The display 408 mayinclude a series of individual lighting elements or light members suchas LED lights 410. The lights may be formed in an array and operablyconnected to the controller 404. Device 400 may include an indicatorsystem 412, which may also be considered a portion or component of theoverall display 408. Indicator system 412 can operate and illuminate inconjunction with the display 408 (which may have pixel member 414) orcompletely separate from the display 408. The indicator system 412 mayalso include a plurality of additional lighting elements or lightmembers, which may also take the form of LED lights in an exemplaryembodiment. In certain embodiments, indicator system may provide avisual indication of goals, such as by illuminating a portion oflighting members of indicator system 412 to represent accomplishmenttowards one or more goals. Device 400 may be configured to display dataexpressed in terms of activity points or currency earned by the userbased on the activity of the user, either through display 408 and/orindicator system 412.

A fastening mechanism 416 can be disengaged wherein the device 400 canbe positioned around a wrist or portion of the user 124 and thefastening mechanism 416 can be subsequently placed in an engagedposition. In one embodiment, fastening mechanism 416 may comprise aninterface, including but not limited to a USB port, for operativeinteraction with computer device 114 and/or devices, such as devices 120and/or 112. In certain embodiments, fastening member may comprise one ormore magnets. In one embodiment, fastening member may be devoid ofmoving parts and rely entirely on magnetic forces.

In certain embodiments, device 400 may comprise a sensor assembly (notshown in FIG. 4). The sensor assembly may comprise a plurality ofdifferent sensors, including those disclosed herein and/or known in theart. In an example embodiment, the sensor assembly may comprise orpermit operative connection to any sensor disclosed herein or known inthe art. Device 400 and or its sensor assembly may be configured toreceive data obtained from one or more external sensors.

iii. Apparel and/or Body Location Sensing

Element 130 of FIG. 1 shows an example sensory location which may beassociated with a physical apparatus, such as a sensor, data acquisitionunit, or other device. Yet in other embodiments, it may be a specificlocation of a body portion or region that is monitored, such as via animage capturing device (e.g., image capturing device 118). In certainembodiments, element 130 may comprise a sensor, such that elements 130 aand 130 b may be sensors integrated into apparel, such as athleticclothing. Such sensors may be placed at any desired location of the bodyof user 124. Sensors 130 a/b may communicate (e.g., wirelessly) with oneor more devices (including other sensors) of BAN 102, LAN 104, and/orWAN 106. In certain embodiments, passive sensing surfaces may reflectwaveforms, such as infrared light, emitted by image-capturing device 118and/or sensor 120. In one embodiment, passive sensors located on user's124 apparel may comprise generally spherical structures made of glass orother transparent or translucent surfaces which may reflect waveforms.Different classes of apparel may be utilized in which a given class ofapparel has specific sensors configured to be located proximate to aspecific portion of the user's 124 body when properly worn. For example,golf apparel may include one or more sensors positioned on the apparelin a first configuration and yet soccer apparel may include one or moresensors positioned on apparel in a second configuration.

FIG. 5 shows illustrative locations for sensory input (see, e.g.,sensory locations 130 a-130 o). In this regard, sensors may be physicalsensors located on/in a user's clothing, yet in other embodiments,sensor locations 130 a-130 o may be based upon identification ofrelationships between two moving body parts. For example, sensorlocation 130 a may be determined by identifying motions of user 124 withan image-capturing device, such as image-capturing device 118. Thus, incertain embodiments, a sensor may not physically be located at aspecific location (such as one or more of sensor locations 130 a-130 o),but is configured to sense properties of that location, such as withimage-capturing device 118 or other sensor data gathered from otherlocations. In this regard, the overall shape or portion of a user's bodymay permit identification of certain body parts. Regardless of whetheran image-capturing device is utilized and/or a physical sensor locatedon the user 124, and/or using data from other devices, (such as sensorysystem 302), device assembly 400 and/or any other device or sensordisclosed herein or known in the art is utilized, the sensors may sensea current location of a body part and/or track movement of the bodypart. In one embodiment, sensory data relating to location 130 m may beutilized in a determination of the user's center of gravity (a.k.a,center of mass). For example, relationships between location 130 a andlocation(s) 130 f/ 130 l with respect to one or more of location(s) 130m-130 o may be utilized to determine if a user's center of gravity hasbeen elevated along the vertical axis (such as during a jump) or if auser is attempting to “fake” a jump by bending and flexing their knees.In one embodiment, sensor location 1306 n may be located at about thesternum of user 124. Likewise, sensor location 130 o may be locatedapproximate to the naval of user 124. In certain embodiments, data fromsensor locations 130 m-130 o may be utilized (alone or in combinationwith other data) to determine the center of gravity for user 124. Infurther embodiments, relationships between multiple sensor locations,such as sensors 130 m-130 o, may be utilized in determining orientationof the user 124 and/or rotational forces, such as twisting of user's 124torso. Further, one or more locations, such as location(s), may beutilized as (or approximate) a center of moment location. For example,in one embodiment, one or more of location(s) 130 m-130 o may serve as apoint for a center of moment location of user 124. In anotherembodiment, one or more locations may serve as a center of moment ofspecific body parts or regions.

In one implementation, this disclosure includes a system configured toallow one or more timing processes to accurately keep track of one ormore timers while a processor executing the one or more timing processesis in a low-power state (otherwise referred to as a low-powerconfiguration, a low-power operational mode, or a low-power mode). Inone embodiment, the processor cannot monitor at least one of the timingprocesses while in this state. Yet in another embodiment, the processormay not be able to monitor at least one of the timing processes asaccurately as when configured into the operational mode. The system isconfigured to set a real-time clock alarm expiration time equal to aclosest expiration time, from a current time, of the one or more timers.Accordingly, upon expiration of the real-time clock alarm, an interruptis communicated to the processor, resulting in the processor beingbrought out of a low-power operational mode, and execution one or moreprocesses associated with the corresponding expired timer may beperformed.

FIG. 6 depicts a schematic block diagram of an exemplary microcontroller600. In one configuration, microcontroller 600 may be similar to, oridentical to the controller 404 from FIG. 4. Accordingly, in oneexample, microcontroller 600 may be positioned within a portableelectronic device, such as device assembly 400 from FIG. 4. In oneembodiment, microcontroller 600 may include a processor 602, a memory604, an interface 606, and a real-time clock (RTC) 608.

It will be readily apparent to those of skill that the depictedcomponents of microcontroller 600 may be configured on a same physicalelectrical circuit. Accordingly, in one implementation, microcontroller600 may be implemented on, among others, a printed circuit board, amicroprocessor chip, a field-programmable gate array, or a breadboard,among others. However, it will also be readily apparent to those ofskill that the depicted components of microcontroller 600 may beimplemented as discrete hardware blocks on separate hardware chips.Furthermore, where FIG. 6 schematically depicts a hardware element ofmicrocontroller 600 as a single schematic block, it will be readilyunderstood to those of skill in the art that said schematic block may beimplemented as one or more separate physical hardware elements.Additionally, it will be understood that while element 600 is describedas a microcontroller 600, the term “microcontroller” should not belimited to devices and/or subcomponents of any particular physicalsize/range of sizes.

Those of skill in the art will also recognize that microcontroller 600may include additional elements beyond those depicted in the schematicblock diagram of FIG. 6. For example, microcontroller 600 may include apower supply (not shown). Additionally, one or more elements may beremoved from the depicted microcontroller 600, without departing fromthe scope of the disclosures described herein. For example, real-timeclock 608, or one or more sub-components thereof, may be implemented asone or more discrete electronic circuits that are separate to, butoperatively connected to, a microcontroller circuit.

In one arrangement, interface 606 may represent one or more data pins,wires, cables, data buses, sockets and/or connectors for communicatingdata and/or power to and/or from microcontroller 600. In this way,interface 606 may be configured to draw power from a power supply, suchas a battery. Additionally or alternatively, interface 606 may beconfigured to supply power to and/or communicate data to and from, oneor more additional components of a unitary device, such as device 400.Furthermore, interface 606 may communicate power and/or data to/from oneor more components associated with a separate device to that device(device 400) with which microcontroller 600 may be operativelyconnected. Accordingly, interface 606 may be configured to communicateacross one or more network types, such as, for example, a local areanetwork (LAN), a storage area network (SAN), a wide area network (WAN),and/or the Internet, among others. Furthermore, interface 606 may beconfigured to communicate using one or more architecture types and/ortopologies, including cable, fiber, satellite, telephone, cellular,wireless, etc. and as such, having one or more wired or wirelesscommunication channels (including but not limited to: WiFi®, Bluetooth®,Near-Field Communication (NFC) and/or ANT technologies).

In one arrangement, microcontroller 600 comprises a memory 604, whereinmemory 604 may represent one or more discrete hardware memory circuits(“chips”), and utilizing one or more different memory technologies.Accordingly, memory 604 may comprise a form of volatile memory that maybe cleared upon a power cycle of microcontroller 600 (removing andsubsequently reinstating a power supply to memory 604). As such, memory604 may comprise one or more memory registers, or random access memory(RAM) devices, among others. Additionally or alternatively, memory 604may comprise one or more persistent forms of memory that retain storeddata once power has been removed from the memory device. As such, memory604 may comprise one or more of a read only memory (ROM) device, anoptical device (hard disk drive (HDD), optical disk (CD/DVD, and thelike), a solid state drive (SSD), a tape device, among others.

Real-time clock module 608 (otherwise referred to simply as real-timeclock 608) may be implemented as one or more integrated circuits forkeeping track of a current time and/or date. Furthermore, real-timeclock 608 may keep track of a current time and/or date independent ofprocessor 602, and such that processor 602 may be active (in oneimplementation, in a high-power operational mode), or inactive (in oneimplementation, in a low-power operational mode, or powered off) whilereal-time clock 608 accurately keeps track of a current time and/ordate. As such, real-time clock 608 may be operational while processor602 is in a low-power operational mode, or while processor 602 isnon-functional. Real-time clock 608 will be described in further detailwith reference to FIG. 7.

Processor 602 may represent one or more processing cores that mayoperate in series and/or parallel, wherein various methodologiesutilized by processors for executing computational tasks, includingparallel processing, will be known to those of skill in the art.Furthermore, processor 602 may carry out computations with a frequencythat may be referred to as a clock rate. This clock rate of processor602 may be a single frequency value, or alternatively, may be a range offrequencies within which processor 602 operates during normaloperational periods. In one configuration, processor 602 may beconfigured to operate with a clock rate of several hundred hertz (Hz),multiple megahertz (MHz), or multiple gigahertz (GHz), and the like. Inone example, a design operational clock rate for processor 602 may bereferred to as a high-power state (otherwise referred to as a high-powerconfiguration, a high-power operational mode, or a high-power mode) ofprocessor 602. In another example, processor 602 may be entered into alow-power state (otherwise referred to as a low-power configuration, alow-power operational mode, or a low-power mode), whereby the low-powerstate may be associated with a low clock rate and/or low powerconsumption by processor 602. In another example, processor 602 may beentered into a low-power operational mode associated with a clock rateand/or a power consumption by processor 602 that may be substantially,or exactly equal to zero. In one example, processor 602 may draw acurrent of approximately 10 mA (milliamps) or more during operation(execution of one or more computations) in a high-power operationalmode. In contrast, processor 602 may draw a current of approximately 250uA (microamps) or less while operating in a low-power operational mode.As such, a power consumption of processor 602 may be reduced by at least90% by setting processor 602 from a high-power operational mode into alow-power operational mode. It will be readily understood by those ofskill in the art, however, that the various alternative clock rates andpower consumption values for both a high-power operational mode and alow-power operational mode of processor 602 may be implemented, withoutdeparting from the scope of the disclosure described herein.Accordingly, in other implementations, a current drawn by a processor602 may be reduced by at least 30%, at least 50%, or at least 75%, andthe like, upon transitioning from a high-power operational mode into alow-power operational mode. Accordingly, in other implementations, powerconsumption by processor 602 may be reduced by at least 30%, at least50%, or at least 75%, and the like, upon transitioning from a high-poweroperational mode into a low-power operational mode.

The use of timers for executing a plurality of different processesassociated with the operation of, in one example, a portable electronicdevice, such as device 400, will be known to those of skill in the art.In one example, processor 602 may execute one or more processes to timevarious actions, intervals, responses, and/or processes, and the like.In one implementation, processor 602 may execute one or more timersusing a combination of hardware, firmware, and/or software. In oneconfiguration, however, one or more timers implemented by processor 602may rely upon processor 602 operating in a high-power operational mode.For example, one or more timers may rely upon processor 602 operating ata design clock rate in a high-power operational mode. In oneconfiguration, a design clock rate (in a high-power operational mode)may be 500 MHz, while a low clock rate associated with a low-poweroperational mode may be less than 100 Hz, or maybe substantially equalto 0 Hz. As such, processor 602 may not be able to maintain conventionaltimers when processor 602 is set into a low-power operational mode.

In one example, processor 602 may execute one or more processes toimplement one or more timers in software. A timer may be used to, amongothers, countdown a time until one or more subsequent processes are tobe executed. Specifically, in one example, a timing process may be usedto countdown a time until a display, such as display 408 from FIG. 4, isto be refreshed. However, a timer, executed by processor 602, may relyupon processor 602 operating at a design clock rate (otherwise referredto as a normal operational clock rate, wherein a normal operationalclock rate may vary depending upon the specific model of processor 602used, and may range from several hundred hertz to several gigahertz, andthe like). As such, a timer, executed by processor 602, may not keeptrack of time accurately, or may be fully nonfunctional upon settingprocessor 602 into a low-power operational mode.

In one implementation, microcontroller 600 may be implemented as anyknown microcontroller in the art. In another implementation,microcontroller 600 may be implemented as one or more microcontrollersfrom a range of microcontrollers produced by STMicroelectronics.Accordingly, in one implementation, microcontroller 600 may be from aproduct range of STMicroelectronics 32-bit microcontrollers (otherwisereferred to as STM32 microcontrollers).

FIG. 7 is a schematic block diagram of a real-time clock module 700(otherwise referred to simply as a real-time clock 700). In oneimplementation, real-time clock module 700 may be similar to, oridentical to, real-time clock module 608 from FIG. 6. In particular,FIG. 7 depicts a more detailed view of one implementation of a real-timeclock 700, and comprising a real-time clock calendar module 702, a clocksource 704, and a real-time clock alarm module 706, having two(hardware) real-time clock alarms 708 and 710. Additionally, real-timeclock 700 includes an input 720 and an output 722. It will be readilyapparent to those of skill in the art that real-time clock 700 depictedin FIG. 7 is merely one example of a real-time clock, and variousdifferent configurations of the depicted elements may be used withoutdeparting from the scope of this disclosure. Additionally, one or moreelements from real-time clock 700 may be omitted, without departing fromthe scope of this disclosure. In other configurations, real-time clock700 may include one or more elements not shown in FIG. 7. For example,real-time clock 700 may include a battery, or other power supply,operatively connected to one or more of components 702, 704, 706, 708,710, 720, 722.

Real-time clock 700 is depicted in FIG. 7 as a single componentcomprising sub-components (702, 704, 706, 708, 710, 720, 722).Accordingly, real-time clock 700 may be configured as a single hardwarecomponent, such as a printed circuit board (PCB), microchip,application-specific integrated circuit (ASIC), and/orfield-programmable gate array (FPGA), and the like. Additionally oralternatively, real-time clock 700, or one or more sub-components (702,704, 706, 708, 710, 720, 722) may be embodied as two or more separatehardware components (microchips, ASICs, FPGAs, PCBs) operativelyconnected to one another.

Clock source 704 represents one or more resonator components forproviding a oscillation frequency that may be used to accurately keeptime. For example, clock source 704 may comprise a quartz oscillatorcrystal with an oscillation (resonance) frequency of 32.768 kHz (2̂15Hz). Additionally or alternatively, clock source 704 may comprise one ormore oscillators with frequencies of oscillation of 1-24 MHz, and/or 37kHz, among others. Accordingly, it will be readily understood to thoseof skill in the art that an oscillator providing a predictable frequencyof oscillation may be used to accurately keep track of time by clockingone or more electronic circuits based on an input frequency ofoscillation provided by clock source 704. Accordingly, clock source 704may provide a frequency input to real-time clock calendar module 702.

Real-time clock calendar module 702 (otherwise referred to simply as areal-time clock calendar 702) may comprise one or more electroniccircuits for keeping track of a current time and date. Accordingly,real-time clock calendar module 702 may use one or more registercircuits to store a date and/or a time. In one implementation, real-timeclock calendar 702 may store the current date and/or time in abinary-coded decimal (BCD) format. As such, real-time clock calendarmodule 702 may include values in one or more memory register circuitscorresponding to: a date, a week date, a month, a year, a valuerepresenting an A.M. or a P.M. time, an hour, a minute, a second, and asub-second.

In one configuration, real-time calendar module 702 may be operativelyconnected to real-time clock alarm module 706, as depicted in FIG. 7. Inone implementation, real-time clock alarm module 706 may comprise one ormore memory register circuits. As depicted in FIG. 7, real-time clockalarm module 706 comprises two (hardware) real-time clock alarms 708 and710. However, those of skill will recognize that real-time clock alarmmodule 706 may comprise a single hardware alarm, or three or morehardware alarms.

A real-time clock hardware-based alarm, such as alarm 708 or 710 may beconfigured to expire at a predetermined expiration time, or after apredetermined expiration period has elapsed. Accordingly, a real-timeclock alarm, such as alarm 708 and/or 710, may store values in one ormore memory register circuits in a similar format to that of real-timeclock calendar module 702, and include values corresponding to: a date,a week date, a month, a year, a value representing an A.M. or a P.M.time, an hour, a minute, a second, and a sub-second. In one embodiment,the real-time clock alarm, such as alarm 708 and/or 710, may expire uponagreement between a stored expiration time and a stored current time,wherein the expiration time may be stored in one or more memoryregisters associated with a hardware alarm, and wherein the current timemay be stored in one or more memory registers associated with real-timeclock calendar module 702.

Upon expiration of one or more hardware-based real-time clock alarms 708and/or 710, real-time clock alarm module 706 may output an interruptsignal, which may be, among others, a high or a low voltage signal on aspecific pin/wire from real-time clock alarm module 706. Additionally,or alternatively, an interrupt signal may comprise information relatedto the interrupt, such as, among others, the specific real-time clockalarm (708 and/or 710) from which the interrupt signal originated.Additionally, upon expiration of one or more real-time clock alarms 708and/or 710, real-time clock alarm module 706 may output a flag signal,otherwise referred to simply as a flag. Accordingly, a flag may be avoltage level from a specific output pin/wire of real-time clock alarmmodule 706 that may be interpreted as corresponding to a specificreal-time clock alarm (708 and/or 710). Additionally or alternatively, aflag signal may communicate data related to the expiration of one ormore real-time clock alarms 708 and/or 710.

Output 722 represents one or more hardware connections between real-timeclock alarm module 706 and one or more components of microcontroller600. As such, output 722 may represent one or more pins, wires, or anyother media for communication of an electronic signal (binary voltagelevel, or signal carrying additional information, and the like). In oneconfiguration, output 722 represents one or more operative connectionsbetween real-time clock alarm module 706 and processor 602 from FIG. 6.As such, output 722 may be used to communicate one or more interruptsignals and/or flag signals from one or more of real-time clockhardware-based alarms 708 and/or 710. In this way, output 722 may beconfigured to communicate information from real-time clock 700 toprocessor 602, where said information may be interpreted by one or moreprocesses (which may, in one implementation, be software processes)executed by processor 602. Similarly, input 720 may represent one ormore operative connections between real-time clock alarm module 706 andone or more components of microcontroller 600. In one configuration,input 720 may operatively connect real-time clock alarm module 706 toprocessor 602 such that processor 602 may communicate one or more of analarm expiration time and/or an alarm expiration period from one or moresoftware processes executed by processor 602, to one or more real-timeclock alarms 708 and/or 710 of real-time clock alarm module 706.

As previously described, processor 602 may be set into a low-poweroperational mode, wherein said low-power operational mode may compriseone or more of a sleep mode, a low-power run mode, a low-power sleepmode, a standby mode, and/or a stop mode, and collectively referred toas a low-power mode. While set into a low-power mode, processor 602 mayoperate at a low clock rate (frequency) that does not allow timingprocesses (which may be, in one implementation, software timers) to keeptrack of time accurately. In another implementation, while set into alow-power mode, processor 602 has a clock rate substantially equal to 0Hz, and similarly, does not allow timing processes to keep track of timeaccurately.

Advantageously, certain systems and methods described herein allow aprocessor, such as processor 602, to execute one or more timingprocesses while allowing said processor 602 to be set into a low-powermode, without affecting the accuracy of said timing processes. Yet otherembodiments may reduce the inaccuracies in timing resulting from thedevice entering into a lower-power mode. In one configuration, ahardware-based alarm, such as real-time clock alarm 708 and/or 710 fromreal-time clock alarm module 706, may be operatively connected toprocessor 602, and allow for a plurality of timer processes to run usingprocessor 602 in communication with memory 604. In one example, a singlehardware alarm 708 and/or 710 may be in communication with processor602, wherein processor 602 may maintain tens, hundreds, or thousands oftimer processes.

In one configuration, processor 602 may store one or more timerprocesses within a timer data structure in memory 604. FIG. 8 depicts aschematic block diagram of one exemplary timer data structure 800.Accordingly, timer data structure 800 represents one embodiment of astructure for storing timer process information, and those of skill inthe art will recognize that a plurality of different structures may beemployed to store timer process information in memory 604, withoutdeparting from the scope of this disclosure. In one implementation,timer data structure 800 includes one or more separate timers, wherein atimer may be associated with an expiration period and one or morelistener processes. For example, timer data structure 800 includes atimer having an expiration period 810 and one or more listener processes820. In this example, expiration period 810 stores a time, inmilliseconds, wherein said time represents an offset time, from acurrent time, at which the timer is to expire. Upon expiration of thetimer, processor 602 may execute one or more processes to communicate asignal to listener 820 that the timer has expired. Accordingly, listener820 may comprise one or more processes executing in a loop until asignal is received indicating that an associated timer has expired. Inresponse, listener 820, upon receiving a signal that an associated timerhas expired, may execute one or more processes associated with theexpiration of said timer.

In one example, timer data structure 800 may be ordered based onincreasing expiration periods of those stored timers. Accordingly, timerdata structure 800 may be referred to as a queue structure. In anotherexample, timer data structure 800 may be a stack data structure, and thelike. As such, those four timers depicted in timer data structure 800are ordered in order of increasing expiration periods, with expirationperiods 810, 812, 814, and 816, having respective expiration periods of60 ms, 150 ms, 1200 ms, and 3000 ms, and associated with respectivelisteners 820, 822, 824, and 826. In other embodiments, as will beapparent to those of skill in the art, timers stored in timer datastructure 800 within memory 604 may be ordered based on one or morefactors other than expiration periods.

FIG. 9 depicts a schematic block diagram of another timer data structure900. In particular, timer data structure 900 stores information relatedto one or more timers, wherein a timer has an associated expiration timeand date, rather than an offset expiration period from a current time.In one configuration, a timer stores an expiration time and date inmemory, such as memory 604. In one implementation, an expiration timeand date may be stored in memory using data values similar to thosevalues stored in one or more memory register circuits associated withreal-time clock alarm 706, and real-time clock calendar 702. As such, inone configuration, a timer, such as timer 902, stores an expiration timeand date as one or more of a date value 904, a week date value 906, amonth value 908, a year value 910, a value representing an A.M. or aP.M. time 912, an hour value 914, a minute value 916, a second value918, and a sub-second value 920. In another implementation, timer 902may store values in addition to those depicted values 904-920, and/ormay store expiration times using fewer values than those depicted(904-920). Additionally, a timer, such as timer 902 may store one ormore processes, or instructions, to be executed upon expiration of arespective timer. As such, timer 902 may be associated with instructions922, wherein the instructions 922 comprise one or more processes to beexecuted upon expiration of a timer. For example, processor 602 maystore timer 902 in timer data structure 900 in order to schedule arefresh of a display, such as display 408 of device 400. Accordingly,processor 602 may store an expiration time and date associated with thisexemplary display-refresh timer within values 904 to 920. Additionally,processor 602 may store one or more processes, within instructions 922,to be executed upon expiration of the timer 902 at the expiration time.These one or more processes may include instructions to refresh thedisplay 408 of device 400.

In a similar manner to timer data structure 800 from FIG. 8, timer datastructure 900 may store one or more timers in order of increasingexpiration time. As such, timer 902 associated with instructions 922,timer 930 associated with instructions 932, timer 940 associated withinstructions 942, and timer 950 associated with instructions 952 may beordered in a queue structure in order of increasing expiration time.

In another embodiment, as will be readily apparent to those of ordinaryskill in the art, timer data structure 900 may include additionalelements to those depicted in FIG. 9. For example, timer data structure900 may comprise timers, such as timers 902, 930, 940, and 950, storinga timer expiration time and/or a timer expiration period. Additionallyor alternatively, timer data structure 900 may store instructions, suchas instructions 922, 932, 942, and 952, in combination with one or morelisteners, such as listener 820, 822, 824, and 826.

FIG. 10 is a flowchart diagram of a process 1000 that allows one or moretimer processes to execute while a processor is set into a low-poweroperational mode. In one embodiment, the processor is a CPU. In anotherembodiment, the CPU is the sole CPU of the system or device. In oneembodiment, the processor may be a master processor to at least oneslave processor. Process 1000 commences at block 1002 with theexpiration of a real-time clock alarm, such as alarms 708 and/or 710from FIG. 7. Upon expiration of a real-time clock alarm, an interruptmay be communicated from real-time clock 700 to processor 602.Accordingly, process 1000 proceeds to block 1004, as processor 602receives the interrupt from real-time clock 700, and exits (wakes/powerson) from a low-power mode. Those of ordinary skill in the art willrecognize that a microcontroller, such as microcontroller 600 may employone or more methods for interrupting a processor 602 using a real-timeclock 700. As such, processor 602 may comprise one or more inputs (inputpins, wires, and the like) for receiving an interrupt signal. Uponreceipt of an interrupt signal, processor 602 may, in oneimplementation, be instructed to exit (wake/power on) from a low-powermode into a high-power operational mode. Additionally, and as describedin relation to output 722 from real-time clock 700, upon expiration ofreal-time clock alarm, such as alarms 708 and/or alarm 710, a flagsignal may be generated. This flag signal may be received by a processor602, wherein receipt of a flag signal by processor 602 may causeprocessor 602 to execute one or more processes associated with theexpired real-time clock alarm 708 and/or 710.

Process 1000 may proceed to block 1006, wherein the processor 602 mayexecute one or more processes to identify one or more expired timersstored in memory, such as memory 604. Upon identification of one or moreexpired timers (which are distinct from the RTC alarm(s) 708 and 710),process 1000, at block 1008, communicates information to one or morelistener processes associated with the expired timers, wherein thecommunicated information indicates that the timers have reached anexpiration time.

Upon expiration of one or more timers in a timer data structure (queue),process 1000 may remove said expired one or more timers from said timerdata structure, as indicated at block 1010 of process 1000.Additionally, block 1010 represents one or more processes to reset areal-time clock alarm, such as real-time clock alarm 708 and/or 710 fromFIG. 7, with a new expiration time and/or a new expiration period. Inone implementation, the real-time clock alarm (708 and/or 710) may beset with an expiration time/expiration period corresponding to anearliest expiration time/period of those remaining timers in a timercollection, such as timer data structures 800 and/or 900. In this way,block 1010 instructs a real-time clock alarm to interrupt processor 602at a time corresponding to an earliest-expiring timer stored in memory604. As such, processor 602 can be set into a low-power mode (asindicated by block 1012 of process 1000) while real-time clock module700 keeps track of the expiration time of a corresponding timer inmemory 604. In another example, a real-time clock alarm, such as alarms708 or alarm 710, may be set to expire at an expiration timecorresponding to more than one timer stored in a timer data structure,such as timer data structure 800 or 900 from FIG. 8 or FIG. 9,respectively. In this way, a real-time clock module 700 may be used toallow one or more timer processes, stored in memory 604, to functionwhile processor 602 is set into a low-power mode.

FIG. 11 is a flowchart of an another exemplary process 1100 for allowingone or more timer processes to execute while a processor which may beCPU, and/or the sole CPU is set into a low-power operational mode. In asimilar manner to process 1000 from FIG. 10, process 1100 commences atblock 1102 with the expiration of a real-time clock alarm, such asreal-time clock alarm 708 or 710. In response, process 1100 proceeds toblock 1104, and processor 602 receives an interrupt from real-time clockmodule 700. Upon receipt of an interrupt from real-time clock module700, processor 602 exits from a low-power operational mode into ahigh-power operational mode.

At block 1106 of process 1100, processor 602 may identify one or moretimers expiring within a predetermined active time period from anexpiration time of a real-time clock alarm. In this way, uponinterrupting processor 602 from a low-power operational mode in order toexecute one or more processes associated with a timer stored in memory604, process 1100 may not set processor 602 to operate in a low-poweroperational mode if there exists other timers in a timer collection,such as timer data structure 800 and/or 900, with expiration timeswithin a predetermined active time period. In one implementation, anactive time period may have a duration of 10 ms, 30 ms, 100 ms, 250 ms,500 ms, 1000 ms, 3000 ms, among others. In one example, a real-timeclock alarm 708 may interrupt processor 602, setting processor 602 intoa high-power operational mode from a low-power operational mode.Accordingly, processor 602 may identify one or more timers, within atimer collection, such as timer data structure 800 or timer datastructure 900, with expiration times falling within an active timeperiod from a current time, wherein a current time may be received fromreal-time clock calendar module 702. In one example, this active timeperiod may measure 100 ms. In response, processor 602 may not be setinto a low-power mode until the one or more processes associated withthe one or more timers falling within the active time period have beenexecuted. This may be beneficial in certain embodiments in which aprocess is executed by the processor as a result of an expired timer isestimated or known to have a duration that would benefit from, and/orrequire the processor to remain in an active state.

In another implementation, processor 602 may not be set into a low-powermode during the time period between two timers if time period betweenthe two timers stored in a timer collection is less than a minimum timergap duration. Accordingly, in one embodiment, a minimum timer gapduration may measure 10 ms, 30 ms, 100 ms, 250 ms, 500 ms, 1000 ms, 3000ms, among others.

Block 1108 of process 1100 represents one or more processes executed byprocessor 602, and associated with one or more of the timers expiringwithin the predetermined active time period. Block 1110 of process 1100represents one or more processes executed by processor 602 to removethose timers expiring during the predetermined active time period fromthe timer data structure (queue).

Block 1112 represents one or more processes to set a real-time clockalarm, such as real-time clock alarm 708 four 710 from FIG. 7. In oneimplementation, block 1112 may set a real-time clock alarm with anexpiration time corresponding to a timer having a closest expirationtime to a current time, and wherein said timers stored in a timercollection. Furthermore, block 1112 represents one or more processesexecuted to set processor 602 into a low-power mode. In this way,real-time clock module 700 may maintain one or more timers, stored in atimer data structure, while processor 602 is in a low-power mode.

In any of the above aspects, the various features may be implemented inhardware, or as software modules running on one or more processors.Features of one aspect may be applied to any of the other aspects.

There may also be provided a computer program or a computer programproduct for carrying out any of the methods described herein, and acomputer readable medium having stored thereon a program for carryingout any of the methods described herein. A computer program may bestored on a computer-readable medium, or it could, for example, be inthe form of a signal such as a downloadable data signal provided from anInternet website, or it could be in any other form.

The various embodiments described herein may be implemented byspecialized computer hardware. In one example, the computer hardware maycomprise one or more processors, otherwise referred to asmicroprocessors, having one or more processing cores configured to allowfor parallel processing/execution of instructions. As such, the variousdisclosures described herein may be implemented as software coding,wherein those of skill in the art will recognize various codinglanguages that may be employed with the disclosures described herein.Additionally, the disclosures described herein may be utilized in theimplementation of application-specific integrated circuits (ASICs), orin the implementation of various electronic components comprisingconventional electronic circuits (otherwise referred to as off-the-shelfcomponents). Furthermore, those of ordinary skill in the art willunderstand that the various descriptions included in this disclosure maybe implemented as data signals communicated using a variety of differenttechnologies and processes. For example, the descriptions of the variousdisclosures described herein may be understood as comprising one or morestreams of data signals, data instructions, or requests, and physicallycommunicated as bits or symbols represented by differing voltage levels,currents, electromagnetic waves, magnetic fields, optical fields, orcombinations thereof.

One or more of the disclosures described herein may comprise a computerprogram product having computer-readable medium/media with instructionsstored thereon/therein that, when executed by a processor, areconfigured to perform one or more methods, techniques, systems, orembodiments described herein. As such, the instructions stored on thecomputer-readable media may comprise actions to be executed forperforming various steps of the methods, techniques, systems, orembodiments described herein. Furthermore, the computer-readablemedium/media may comprise a storage medium with instructions configuredto be processed by a computing device, and specifically a processorassociated with a computing device. As such the computer-readable mediummay include a form of persistent or volatile memory such as a hard diskdrive (HDD), a solid state drive (SSD), an optical disk (CD-ROMs, DVDs),tape drives, floppy disk, ROM, RAM, EPROM, EEPROM, DRAM, VRAM, flashmemory, RAID devices, remote data storage (cloud storage, and the like),or any other media type or storage device suitable for storing datathereon/therein. Additionally, combinations of different storage mediatypes may be implemented into a hybrid storage device. In oneimplementation, a first storage medium may be prioritized over a secondstorage medium, such that different workloads may be implemented bystorage media of different priorities.

Further, the computer-readable media may store softwarecode/instructions configured to control one or more of ageneral-purpose, or a specialized computer. Said software may beutilized to facilitate interface between a human user and a computingdevice, and wherein said software may include device drivers, operatingsystems, and applications. As such, the computer-readable media maystore software code/instructions configured to perform one or moreimplementations described herein.

Those of ordinary skill in the art will understand that the variousillustrative logical blocks, modules, circuits, techniques, or methodsteps of those implementations described herein may be implemented aselectronic hardware devices, computer software, or combinations thereofAs such, various illustrative modules/components have been describedthroughout this disclosure in terms of general functionality, whereinone of ordinary skill in the art will understand that the describeddisclosures may be implemented as hardware, software, or combinations ofboth.

The one or more implementations described throughout this disclosure mayutilize logical blocks, modules, and circuits that may be implemented orperformed with a general-purpose processor, a digital signal processor(DSP), an application-specific integrated circuit (ASIC), a fieldprogrammable gate array (FPGA) or other programmable logic device,discrete gate or transistor logic, discrete hardware components, or anycombination thereof designed to perform the functions described herein.A general-purpose processor may be a microprocessor, or any conventionalprocessor, controller, microcontroller, or state machine. A processormay also be implemented as a combination of computing devices, e.g., acombination of a DSP and a microprocessor, a plurality ofmicroprocessors, one or more microprocessors in conjunction with a DSPcore, or any other such configuration.

The techniques or steps of a method described in connection with theembodiments disclosed herein may be embodied directly in hardware, insoftware executed by a processor, or in a combination of the two. Insome embodiments, any software module, software layer, or threaddescribed herein may comprise an engine comprising firmware or softwareand hardware configured to perform embodiments described herein.Functions of a software module or software layer described herein may beembodied directly in hardware, or embodied as software executed by aprocessor, or embodied as a combination of the two. A software modulemay reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROMmemory, registers, hard disk, a removable disk, a CD-ROM, or any otherform of storage medium known in the art. An example storage medium iscoupled to the processor such that the processor can read data from, andwrite data to, the storage medium. In the alternative, the storagemedium may be integral to the processor. The processor and the storagemedium may reside in an ASIC. The ASIC may reside in a user device. Inthe alternative, the processor and the storage medium may reside asdiscrete components in a user device.

For the avoidance of doubt, the present application extends to thesubject-matter described in the following numbered Implementations:

Implementation 1. An apparatus, comprising: a processor; a real-timeclock alarm module configured to expire a real-time clock alarm after analarm expiration period; a real-time clock calendar module configured totrigger an expiration of the real-time clock alarm upon agreementbetween a real-time clock calendar time and an expiration timeassociated with the real-time clock alarm; and memory storingcomputer-readable instructions that, when executed by the processor,cause the apparatus to: store one or more timers in a queue, whereinsaid queue is ordered in order of increasing expiration time for saidone or more timers; identify, upon expiration of the real-time clockalarm, one or more expired timers from the one or more timers stored inthe queue; execute one or more processes associated with the one or moreexpired timers; remove the one or more expired timers from the queue;and set the alarm expiration period equal to a first expiration timeassociated with a first timer remaining in the queue.

Implementation 2. The apparatus of Implementation 1, wherein thecomputer-readable instructions, when executed by the processor, furthercause the apparatus to: set an operational mode of the processor uponsetting the alarm expiration period.

Implementation 3. The apparatus of Implementation 2, wherein theoperational mode of the processor is a low-power operational mode.

Implementation 4. The apparatus of Implementation 3, wherein thelow-power operational mode operates the processor at a low frequency.

Implementation 5. The apparatus Implementation 6, wherein the low-poweroperational mode reduces power consumption by the processor by at least90%.

Implementation 6. The apparatus of any of Implementations 1-5, whereinthe real-time clock alarm module is configured to trigger an interrupton the processor upon expiration of the real-time clock alarm.

Implementation 7. The apparatus of Implementation 6, wherein theinterrupt wakes the processor from a low-power operational mode.

Implementation 8. The apparatus of any of Implementations 1-7, whereinthe apparatus comprises an STM32 microcontroller.

Implementation 9. An apparatus according to any of Implementations 1-8,wherein the apparatus is configured to be worn around an appendage of auser, such as a wrist.

Implementation 10. An apparatus according to any of Implementations 1-9,wherein the apparatus is a unitary apparatus, such as a wristband.

Implementation 11. A method comprising: setting a real-time clock alarmto expire after an alarm expiration period; storing one or more timersin a queue, wherein said queue is ordered in order of increasingexpiration time for said one or more timers; identifying, uponexpiration of the real-time clock alarm, one or more expired timers fromthe one or more timers stored in the queue; executing one or moreprocesses associated with the one or more expired timers; removing theone or more expired timers from the queue; and setting the alarmexpiration period equal to a first expiration time associated with afirst timer remaining in the queue.

Implementation 12. A method according to Implementation 11, whereinsteps (a)-(f) are repeated cyclically.

Implementation 13. A non-transitory computer-readable medium comprisingexecutable instructions that when executed cause a computer device toperform the method as described in Implementations 11 or 12.

Implementation 14. A unitary apparatus configured to be worm around theappendage of a user, comprising: a power supply; a sensor configured tocapture acceleration data from the appendage of the user; a processorconfigured to receive captured acceleration data from the sensor; areal-time clock alarm module configured to expire a real-time clockalarm after an alarm expiration period; a non-transitorycomputer-readable medium comprising computer-executable instructionsthat when executed by the processor cause the processor to perform atleast: store one or more timers in a data structure; identify, uponexpiration of the real-time clock alarm, one or more expired timers fromthe one or more timers stored in the data structure; execute one or moreprocesses associated with the one or more expired timers; remove the oneor more expired timers from the data structure; and set the alarmexpiration period equal to a first expiration time associated with afirst timer in the data structure that has a closest expiration time toa current time.

Implementation 15. The unitary apparatus of Implementation 14, whereinthe computer-executable instructions, when executed by the processor,further cause the processor to: set an operational mode of the processorupon setting the alarm expiration period.

Implementation 16. The unitary apparatus of Implementation 15, whereinthe operational mode of the processor is a low-power operational mode.

Implementation 17. The unitary apparatus of Implementation 16, whereinthe low-power operational mode reduces power consumption by theprocessor by at least 90%.

Implementation 18. The unitary apparatus of Implementation 16 or 17,wherein the computer-executable instructions, when executed by theprocessor, cause the processor to further perform: wake the processorfrom the low-power operational mode upon receipt of acceleration datawith a predetermined acceleration characteristic.

Implementation 19. The unitary apparatus of any of Implementations14-18, wherein the real-time clock alarm module is configured to triggeran interrupt on the processor upon expiration of the real-time clockalarm.

Implementation 20. The unitary apparatus of Implementation 19, whereinthe interrupt wakes the processor from a low-power operational mode.

Implementation 21. The unitary apparatus of any of Implementations14-20, wherein the computer-executable instructions, when executed bythe processor, cause the processor to further perform: store a timeouttimer in the data structure if no acceleration data is received during apredetermined timeout time period.

Implementation 22. The unitary apparatus of any of Implementations14-21, wherein the unitary apparatus further comprises amicrocontroller.

Implementation 23. The unitary apparatus of any of Implementations 9-22,wherein the unitary apparatus is a wristband.

Implementation 24. A non-transitory computer-readable medium comprisingcomputer-executable instructions that when executed by a processor areconfigured to perform at least: store one or more timers in a datastructure; identify, upon expiration of a real-time clock alarmassociated with a real-time clock alarm module, one or more timers, fromthe data structure, that will expire within a predetermined active timeperiod from a current time indicated by a real-time clock calendarmodule; execute one or more processes associated with the one or moretimers that will expire during the predetermined active time period; setan alarm expiration period of the real-time clock alarm module equal toa future expiration time associated with a timer in the data structure,wherein the future expiration time is a closest expiration time, fromthe one or more timers, to the current time; and set a low-poweroperational mode of the processor upon setting the alarm expirationperiod.

Implementation 25. The non-transitory computer-readable medium ofImplementation 24, wherein the real-time clock alarm module isconfigured to trigger an interrupt on the processor, setting ahigh-power operational mode of the processor, upon expiration of thereal-time clock alarm

Implementation 26. The non-transitory computer-readable medium ofImplementation 24 or 25, wherein the low-power operational mode reducesa clock frequency of operation of the processor by at least 90%.

Implementation 27. An apparatus comprising the non-transitorycomputer-readable medium of any of Implementations 24-26.

Implementation 28. An apparatus according to Implementation 27, whereinthe apparatus is configured to be worn around an appendage of a user,such as a wrist.

Implementation 29. An apparatus according to Implementation 27 or 28,wherein the apparatus is a unitary apparatus, such as a wristband.

Accordingly, it will be understood that the invention is not to belimited to the embodiments disclosed herein, but is to be understoodfrom the following claims, which are to be interpreted as broadly asallowed under the law.

We claim:
 1. An apparatus, comprising: a processor; a real-time clockalarm module, operatively connected to the processor, and configured toexpire a real-time clock alarm after an alarm expiration period; areal-time clock calendar module, operatively connected to the real-timeclock alarm module, and configured to trigger an expiration of thereal-time clock alarm upon agreement between a real-time clock calendartime and an expiration time associated with the real-time clock alarm;and memory storing computer-readable instructions that, when executed bythe processor, cause the apparatus to: store one or more timers in aqueue, wherein said queue is ordered in order of increasing expirationtime for said one or more timers; identify, upon expiration of thereal-time clock alarm, one or more expired timers from the one or moretimers stored in the queue; execute one or more processes associatedwith the one or more expired timers; remove the one or more expiredtimers from the queue; and set the alarm expiration period equal to afirst expiration time associated with a first timer remaining in thequeue.
 2. The apparatus of claim 1, wherein the computer-readableinstructions, when executed by the processor, further cause theapparatus to: set an operational mode of the processor upon setting thealarm expiration period.
 3. The apparatus of claim 2, wherein theoperational mode of the processor is a low-power operational mode. 4.The apparatus of claim 3, wherein the low-power operational modeoperates the processor at a low frequency.
 5. The apparatus of claim 1,wherein the real-time clock alarm module is configured to trigger aninterrupt on the processor upon expiration of the real-time clock alarm.6. The apparatus of claim 5, wherein the interrupt wakes the processorfrom a low-power operational mode.
 7. The apparatus claim 6, wherein thelow-power operational mode reduces power consumption by the processor byat least 90%.
 8. The apparatus of claim 1, wherein the apparatuscomprises an STM32 microcontroller.
 9. A unitary apparatus configured tobe worm by a user, comprising: a structure configured to be worn aroundan appendage of a user, comprising: a power supply; a sensor configuredto capture acceleration data from the appendage of the user; aprocessor, operatively connected to the sensor, and configured toreceive captured acceleration data; a real-time clock alarm module,operatively connected to the processor, and configured to expire areal-time clock alarm after an alarm expiration period; a non-transitorycomputer-readable medium comprising computer-executable instructionsthat when executed by the processor cause the processor to perform atleast: store one or more timers in a data structure; identify, uponexpiration of the real-time clock alarm, one or more expired timers fromthe one or more timers stored in the data structure; execute one or moreprocesses associated with the one or more expired timers; remove the oneor more expired timers from the data structure; and set the alarmexpiration period equal to a first expiration time associated with afirst timer in the data structure that has a closest expiration time toa current time.
 10. The unitary apparatus of claim 9, wherein thecomputer-executable instructions, when executed by the processor,further cause the processor to: set an operational mode of the processorupon setting the alarm expiration period.
 11. The unitary apparatus ofclaim 10, wherein the operational mode of the processor is a low-poweroperational mode.
 12. The unitary apparatus of claim 11, wherein thelow-power operational mode reduces power consumption by the processor byat least 90%.
 13. The unitary apparatus of claim 11, wherein thecomputer-executable instructions, when executed by the processor, causethe processor to further perform: wake the processor from the low-poweroperational mode upon receipt of acceleration data with a predeterminedacceleration characteristic.
 14. The unitary apparatus of claim 9,wherein the real-time clock alarm module is configured to trigger aninterrupt on the processor upon expiration of the real-time clock alarm.15. The unitary apparatus of claim 14, wherein the interrupt wakes theprocessor from a low-power operational mode.
 16. The unitary apparatusof claim 9, wherein the computer-executable instructions, when executedby the processor, cause the processor to further perform: store atimeout timer in the data structure if no acceleration data is receivedduring a predetermined timeout time period.
 17. The unitary apparatus ofclaim 9, wherein the structure configured to be worm around an appendageof a user further comprises a microcontroller.
 18. A non-transitorycomputer-readable medium comprising computer-executable instructionsthat when executed by a processor are configured to perform at least:store one or more timers in a data structure; identify, upon expirationof a real-time clock alarm associated with a real-time clock alarmmodule, one or more timers, from the data structure, that will expirewithin a predetermined active time period from a current time indicatedby a real-time clock calendar module; execute one or more processesassociated with the one or more timers that will expire during thepredetermined active time period; set an alarm expiration period of thereal-time clock alarm module equal to a future expiration timeassociated with a timer in the data structure, wherein the futureexpiration time is a closest expiration time, from the one or moretimers, to the current time; and set a low-power operational mode of theprocessor upon setting the alarm expiration period.
 19. Thenon-transitory computer-readable medium of claim 18, wherein thereal-time clock alarm module is configured to trigger an interrupt onthe processor, setting a high-power operational mode of the processor,upon expiration of the real-time clock alarm
 20. The non-transitorycomputer-readable medium of claim 18, wherein the low-power operationalmode reduces a clock frequency of operation of the processor by at least90%.